/*3.定义Person类//饲养员
属性：姓名，年龄
行为：keepPet（Dog dog,String something）方法 功能：喂养宠物狗，something表示喂养的东西
行为：keepPet（Cat cat,String something）方法 功能：喂养宠物猫，something表示喂养的东西
生成空参有参构造，set和get方法*/
package polymorphismdemo4_practice;

public class Person {
    private String name;
    private int age;

    public Person() {

    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    // 行为
    /*
     * //养狗
     * public void keepPet(dog dog, String something) {
     * System.out.println("“年龄为" + age + "岁的" + name + "养了一只" + dog.getColor() +
     * "颜色的" + dog.getAge() + "岁的狗");
     * dog.eat(something);
     * }
     * //养猫
     * public void keepPet(cat cat, String something) {
     * System.out.println("“年龄为" + age + "岁的" + name + "养了一只" + cat.getColor() +
     * "颜色的" + cat.getAge() + "岁的猫");
     * cat.eat(something);
     * }
     */

    /*
     * 5. 思考：
     * 1.D og和Cat都是Animal的子类，以上案例中针对不同的动物，定义了不同的keeppet方法，过于繁琐，能否简化，并体会简化后的好处？
     * 2.D og和Cat虽然都是Animal的子类，但是都有其特有方法，能否想办法在keepPet中调用特有方法？
     */

    public void keepPet(animal a, String something) {
        if (a instanceof dog d) {
            System.out.println("“年龄为" + age + "岁的" + name + "养了一只" + a.getColor() + "颜色的" + a.getAge() + "岁的狗");
            a.eat(something);
        } else if (a instanceof cat c) {
            System.out.println("“年龄为" + age + "岁的" + name + "养了一只" + a.getColor() + "颜色的" + a.getAge() + "岁的猫");
            c.eat(something);
        } else {
            System.out.println("没有这个动物");
        }
    }
}